home *** CD-ROM | disk | FTP | other *** search
- #include "lprlib.h"
-
- main(argc, argv)
- int argc; unsigned char * argv[];
- {
- OSErr rc;
- short vref, fref, sizeattrs;
- long fsize;
- Handle sizehandle;
- struct {
- short flags;
- long prefsize;
- long minsize;
- } sizersc;
- unsigned char fname[128];
- char test;
-
- if (argc < 2) {
- printf("A fileid must be specified to addsw.\n");
- return;
- }
- strcpy(fname, argv[1]);
- c2pstr(fname);
- test = argc > 2;
-
- /* get size of lpr resource fork */
- vref = 0;
- rc = OpenRF(fname, vref, &fref);
- if (rc != 0) {
- printf("Error %d from OpenRF.\n", rc);
- return(rc);
- }
- rc = GetEOF(fref, &fsize);
- FSClose(fref);
- if (rc != 0) {
- printf("Error %d from GetEOF.\n", rc);
- return(rc);
- }
-
- /* construct switcher resource to be added */
-
- sizersc.flags = 0x5880;
- sizersc.prefsize = ((fsize + 90140L + 512) >> 10) << 10;
- sizersc.minsize = ((fsize + 90140L + 512) >> 10) << 10;
-
- /* add new resource to lpr */
- fref = OpenResFile(fname);
- rc = ResError();
- if (rc != 0) {
- printf("Error %d from OpenResFile.\n", rc);
- return(rc);
- }
- sizehandle = NewHandle(10L);
- memcpy(*sizehandle, &sizersc, 10);
- AddResource(sizehandle, 'SIZE', -1, "\pSwitcher/MF sizes");
- rc = ResError();
- if (rc != 0) {
- printf("Error %d from AddResource.\n", rc);
- CloseResFile(fref);
- DisposHandle(sizehandle);
- return(rc);
- }
- sizehandle = GetResource('SIZE', -1);
- rc = ResError();
- if (rc != 0) {
- printf("Error %d from GetResource.\n", rc);
- CloseResFile(fref);
- DisposHandle(sizehandle);
- return(rc);
- }
- sizeattrs = GetResAttrs(sizehandle);
- rc = ResError();
- if (rc != 0) {
- printf("Error %d from GetResAttrs.\n", rc);
- CloseResFile(fref);
- DisposHandle(sizehandle);
- return(rc);
- }
- sizeattrs |= resPreload;
- SetResAttrs(sizehandle, sizeattrs);
- rc = ResError();
- if (rc != 0) {
- printf("Error %d from SetResAttrs.\n", rc);
- CloseResFile(fref);
- DisposHandle(sizehandle);
- return(rc);
- }
- CloseResFile(fref);
- rc = ResError();
- if (rc != 0) {
- printf("Error %d from CloseResFile.\n", rc);
- }
- DisposHandle(sizehandle);
- return(rc);
- }
-